home *** CD-ROM | disk | FTP | other *** search
-
- PROGRAM mail_label;
-
- USES CRT,DOS,PRINTER;
-
- const
- top = 300;
-
- TYPE
- REC = RECORD
- FNAME : STRING[20];
- LNAME : STRING[20];
- ad1 : string[20];
- ad2 : string[20];
- CITY : STRING[20];
- STATE : STRING[20];
- ZIP : STRING[10];
- phone : string[10];
- END; (* RECORDS*)
- DATABANK = ARRAY [1..TOP] OF REC;
-
-
- VAR
- ALLDATA : DATABANK;
- I , MAX: INTEGER;
- CH : CHAR;
- saved : boolean;
- (*******************************************************************)
- (* BEGIN PROCEDURES AND FUNCTIONS *)
- (*******************************************************************)
-
- procedure sort;
- (**********************************)
- procedure shell(var alldata:databank;n : integer);
- var
- gap,i,j,k : integer;
- (**********************************)
- procedure switch(var a,b : rec);
- var
- c : rec;
- begin
- c:=a;
- a:=b;
- b:=c;
- end;
- (**********************************)
- begin
- gap := n div 2;
- while (gap > 0) do
- begin
- for i:=(gap+1) to n do
- begin
- j:=i - gap;
- while (j > 0) do
- begin
- k:=j + gap;
- if alldata[j].lname < alldata[k].lname then
- j:=0
- else
- begin
- if ((alldata[j].lname = alldata[k].lname) and (alldata[j].fname <= alldata[k].fname)) then j:=0
- else
- switch(alldata[j],alldata[k]);
- end;
- j:=j-gap
- end;
- end;
- gap:=gap div 2;
- end;
- end;
- begin
- shell(alldata,max);
- end;
-
- (*********************************************************)
-
- PROCEDURE BLANKONE(ONEE : REC;VAR ONE : REC) ;
- BEGIN
- ONEE.FNAME :='';
- ONEE.LNAME :='';
- ONEE.CITY :='';
- ONEE.AD1 := '';
- ONEE.AD2 := '';
- ONEE.PHONE:='';
- ONEE.STATE :='';
- ONEE.ZIP :='';
- ONE:=ONEE;
- END;
-
- (*==================================================================*)
-
- FUNCTION HOWMANYINALLDATA : INTEGER;
-
- VAR
- TEMP:INTEGER;
-
- BEGIN
- TEMP:=0;
- i:=0;
- WHILE TEMP=0 DO
- BEGIN
- I:=I + 1;
- IF ALLDATA[I].FNAME = '' THEN TEMP:=I;
- END;
- HOWMANYINALLDATA:=TEMP-1;
- END;
-
- (*==================================================================*)
-
- PROCEDURE io(inp:boolean);
- VAR
- ch:char;
- exist : string;
- filen:string;
- OFILE : FILE OF DATABANK;
- BEGIN
- clrscr;
- if inp = false then
- begin
- ch:='Y';
- sort;
- WRITE('Enter the name of the file to save. Press Enter to Exit. ');
- readln(filen);
- repeat
- exist:='';
- exist:=fsearch(filen,'');
- if filen = '' then exit;
- if length(exist)<>0 then
- begin
- clrscr;
- sound(1000);
- delay(500);
- nosound;
- writeln(filen,' allready exists do you want to overwrite ? (Y/N) ');
- ch:=upcase(readkey);
- if ch='N' then
- begin
- write('Enter new Name : ');
- readln(filen);
- end;
- end;
- until ((ch = 'Y') or (exist = ''));
- (*$I-*)
- ASSIGN(OFILE,filen);
- REWRITE(OFILE);
- end;
- if inp = true then
- begin
- WRITE('Enter the name of the file to load. Press Enter to Exit. ');
- readln(filen);
- if filen = '' then exit;
- (*$I-*)
- ASSIGN(OFILE,filen);
- reset(OFILE);
- end;
- if ioresult <> 0 then
- begin
- clrscr;
- writeln('Disk Error or file not found !!!');
- sound(1000);
- delay(1000);
- nosound;
- exit;
- (*$I+*)
- end;
- (*$i+*)
- if inp = false then WRITE(OFILE,ALLDATA) else read(ofile,alldata);
- CLOSE(OFILE);
- saved:=true;
- END;
-
- (*==================================================================*)
-
- PROCEDURE VIEWONSCREEN;
- var
- dest : string;
- where : text;
- temp : char;
- BEGIN
- textbackground(black);
- CLRSCR;
- write('Enter 1 to print to the Screen, or 2 to print to the printer. ');
- readln(temp);
- case temp of
- '1' : dest:='con';
- '2' : dest:='lst';
- end (* end of case *);
- assign(where,dest);
- rewrite(where);
- clrscr;
- FOR I:=1 TO MAX DO
- BEGIN
- WITH ALLDATA[I] DO
- BEGIN
- WRITELN(where,FNAME,' ', LNAME);
- WRITELN(where,AD1);
- WRITELN(where,AD2);
- WRITELN(where,CITY,' , ',STATE,' , ',ZIP);
- WRITELN(where,PHONE);
- READLN;
- END;
- END;
- close(where);
- END;
-
- (*==================================================================*)
-
- PROCEDURE ADD;
- VAR
- TEMP : STRING;
- BEGIN
- CLRSCR;
- IF MAX=TOP THEN
- BEGIN
- WRITELN('ARRAY FULL CAN''T ADD.');
- DELAY(1000);
- EXIT;
- END;
- MAX:=MAX+1;
- WITH ALLDATA[max] DO
- BEGIN
- WRITE('ENTER L. NAME ''Q'' TO QUIT. ');
- READLN(LNAME);
- IF ((LNAME = 'Q') or (lname = 'q')) THEN
- begin
- max:=0;
- EXIT;
- end;
- saved:=false;
- WRITE('ENTER FIRST NAME: ');
- READLN(FNAME);
- WRITE('ADDRESS LINE 1: ');
- READLN(AD1);
- WRITE('ADDRESS LINE 2: ');
- READLN(AD2);
- WRITE('CITY: ');
- READLN(CITY);
- WRITE('STATE: ');
- READLN(STATE);
- WRITE('ZIP: ');
- READLN(ZIP);
- WRITE('PHONE: ');
- READLN(PHONE);
- END;
- sort;
- END;
-
- (*==================================================================*)
-
- PROCEDURE DELETE;
- VAR
- i : integer;
- ch : char;
- TEMP1,TEMP2:STRING;
- FOUND:BOOLEAN;
- temp:integer;
- BEGIN
- CLRSCR;
- WRITEln('Press the space bar for the next name, or Enter to choose the name, or q to Quit');
- i:=1;
- found := false;
- repeat
- gotoxy(1,3);
- write(alldata[i].lname,',',alldata[i].fname);
- ch:=upcase(readkey);
- if ch='Q' then exit;
- if ch=#13 then found := true;
- i:=i+1;
- if i> max then i:=1;
- until found = true;
- if i=1 then i:=2;
- i:=i-1;
- BLANKONE(ALLDATA[I],ALLDATA[I]);
- for temp:=i to max-1 do
- alldata[temp]:=alldata[temp+1];
- blankone(alldata[max],alldata[max]);
- max:=max-1;
- I:=I+1;
- sort;
- END;
-
- (*==================================================================*)
-
- procedure change;
- VAR
- TEMP1,TEMP2:STRING;
- FOUND:BOOLEAN;
- ch : char;
- temp:integer;
- BEGIN
- CLRSCR;
- WRITEln('Press the space bar for the next name, or Enter to choose the name, or q to Quit');
- i:=1;
- found := false;
- repeat
- gotoxy(1,3);
- write(alldata[i].lname,',',alldata[i].fname);
- ch:=upcase(readkey);
- if ch='Q' then exit;
- if ch=#13 then found := true;
- i:=i+1;
- if i> max then i:=1;
- until found = true;
- if i=1 then i:=2;
- i:=i-1;
- repeat
- WITH ALLDATA[I] DO
- BEGIN
- clrscr;
- WRITEln('1. L. NAME: ',lname);
- WRITEln('2. FIRST NAME: ',fname);
- WRITEln('3. ADDRESS LINE 1: ',ad1);
- WRITEln('4. ADDRESS LINE 2: ',ad2);
- WRITEln('5. CITY: ',city);
- WRITEln('6. STATE: ',state);
- WRITEln('7. ZIP: ',zip);
- WRITEln('8. PHONE: ',phone);
- writeln('9. To Exit');
- END;
- writeln('What one to change ?');
- ch:=readkey;
- with alldata[i] do
- begin
- case ch of
- '1' : begin
- writeln('Enter new L. Name: ');
- readln(lname);
- saved:=false;
- end;
- '2' : begin
- writeln('Enter new F.Name: ');
- readln(fname);
- saved:=false;
- end;
- '3' : begin
- writeln('Enter new Address line 1: ');
- readln(ad1);
- saved:=false;
- end;
- '4' : begin
- writeln('Enter new Address Line 2: ');
- readln(ad2);
- saved:=false;
- end;
- '5' : begin
- writeln('Enter new City: ');
- readln(city);
- saved:=false;
- end;
- '6' : begin
- writeln('Enter new State: ');
- readln(state);
- saved:=false;
- end;
- '7' : begin
- writeln('Enter new Zip: ');
- readln(zip);
- saved:=false;
- end;
- '8' : begin
- writeln('Enter new Phone number: ');
- readln(phone);
- saved:=false;
- end;
- end;
- end;
- until ch = '9';
- i:=1+1;
- sort;
- end;
-
- (*==================================================================*)
-
- PROCEDURE MAKE_INITIAL;
- BEGIN
- MAX:=0;
- ADD;
- END;
-
- (*==================================================================*)
-
- PROCEDURE PLABEL;
- BEGIN
- FOR I:=1 TO MAX DO
- BEGIN
- WITH ALLDATA[I] DO
- BEGIN
- WRITELN(LST,FNAME,' ',LNAME);
- WRITELN(LST,AD1);
- IF AD2<>'' THEN WRITELN(LST,AD2);
- WRITELN(LST,CITY,' , ',STATE,' , ',ZIP);
- IF AD2='' THEN WRITELN(LST);
- writeln(lst);
- WRITELN(LST);
- END;
- END;
- END;
-
- (**************************************************************************)
- (* BEGIN MAIN PROGRAM *)
- (**************************************************************************)
-
- BEGIN
- FOR I:=1 TO TOP DO
- BLANKONE(ALLDATA[I],ALLDATA[I]);
- MAX:=0;
- I:=1;
- saved:=true;
- textbackground(blue);
- textcolor(white);
- CLRSCR;
- REPEAT
- textbackground(blue);
- textcolor(white);
- clrscr;
- max:=howmanyinalldata;
- if max <> 0 then
- begin
- WRITELN('Enter ''S'' To Save the List.');
- WRITELN('Enter ''L'' To Load the List.');
- WRITELN('Enter ''A'' To Add to the List.');
- WRITELN('Enter ''D'' To Delete from the List.');
- WRITELN('Enter ''C'' To Change an address.');
- WRITELN('Enter ''V'' To View the List.');
- WRITELN('Enter ''P'' To Print the labels.');
- WRITELN('Enter ''Q'' To QUIT');
- writeln;
- if saved=false then
- writeln('Please save your work.');
- CH:=READKEY;
- CH:=UPCASE(CH);
- CASE CH OF
- 'V': VIEWONSCREEN;
- 'S': io(false);
- 'L': io(true);
- 'A': ADD;
- 'P': PLABEL;
- 'D': DELETE;
- 'C': change;
- END;
- end;
- if max = 0 then
- begin
- TEXTBACKGROUND(BLUE);
- CLRSCR;
- TEXTCOLOR(WHITE);
- WRITE('Enter ''M'' To Make the First Record ');
- TEXTCOLOR(10+BLINK);
- WRITELN('ONLY.');
- TEXTCOLOR(WHITE);
- WRITELN('Enter ''S'' To Save the List.');
- WRITELN('Enter ''L'' To Load the List.');
- WRITELN('Enter ''Q'' To QUIT');
- CH:=READKEY;
- CH:=UPCASE(CH);
- CASE CH OF
- 'M':Make_initial;
- 'S': io(false);
- 'L': io(true);
- END;
- clrscr;
- end;
- UNTIL CH='Q';
- if saved=false then io(false);
- textbackground(black);
- textcolor(white);
- clrscr;
- END.